﻿using Fadada.FASC.SDK.DotNetCore.Attributes;
using Newtonsoft.Json;

namespace Fadada.FASC.SDK.DotNetCore.Model
{
    [RemoteService("/user/get-auth-url", "POST")]
    public class UserGetAuthUrl:OpenUserIdModel
    {
        /// <summary>
        /// 个人身份信息。可以指定，也可以不指定。若指定了身份信息，在实名认证中不允许修改。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "userIdentInfo", Required = Required.AllowNull)]
        public UserIdentInfo UserIdentInfo { get; set; }

        /// <summary>
        /// 个人补充信息，用于个人实名认证时预先填充。可以提供，也可以不提供。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "userInfoExtend", Required = Required.AllowNull)]
        public UserInfoExtend UserInfoExtend { get; set; }

        /// <summary>
        /// 是否需要匹配个人身份信息一致：false: 不需要匹配一致true: 需要匹配一致缺省为false。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identInfoMatch", Required = Required.AllowNull)]
        public bool IdentInfoMatch { get; set; }

        /// <summary>
        /// 用户授权范围列表：只有在授权范围内的权限，该应用系统才可调用
        /// ident_info: 身份信息 (涉及个人隐私数据，需得到用户授权)
        /// signtask_init: 发起签署任务 (在合同签署任务中，发起方地位特殊，需得到用户授权)
        /// resource_for_sign: 签署相关数据资源 (如文档和模板等，是属于用户的，需得到用户授权)
        /// 默认为空。
        /// 注意：
        /// 1.法大大平台将根据该参数所请求的授权范围，在用户打开的授权请求页面上展示相关文案和交互，提醒用户进行授权确认。用户并不一定接受您所请求的所有授权范围，实际的授权状态和范围将通过redirectUrl的参数或个人用户授权事件回调通知应用系统。您也可以通过调用查询个人用户基本信息查询实际的授权状态和范围。
        /// 2. 注意调用时认真设置授权范围。例如，对于那些无需在该应用系统上发起签署任务的用户或企业经办人，您可能无须要求signtask_init、resource_for_sign授权。如果您无需通过接口获取用户的详细身份信息，也无需要求ident_info授权。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "requestAuthScope", Required = Required.AllowNull)]
        public string[] RequestAuthScope { get; set; }

        /// <summary>
        /// 重定向地址。即用户在返回的页面上完成操作后重定向跳转到该地址，并且附带上参数。该地址是应用系统的地址，以实现用户交互在应用系统和法大大平台之间的连贯性。长度最大500个字符。
        /// 注意：如果未设置redirectUrl，则授权完成的参数通过回调事件通知应用系统服务端。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "redirectUrl", Required = Required.AllowNull)]
        public string RedirectUrl { get; set; }
    }
}